刷算法题用的 Cpp 单文件编译相关配置文件

本文所部署的工具链在 Windows 系统上存在严重的兼容问题。

使用 vscode + clang全家桶 工具链完成刷算法题需要的 C++ 单文件编译工程。

为什么从 GCC 转到了 Clang

很简单,gcc 加微软官方提供的 C/C++ 插件这套工具链的 LSP 太拉了,在诸如智能联想、静态检查这些决定了 Coding 体验的方面现在完全不如作为后起之秀的 clangd。

系统环境

Manjaro Linux 系统,基于 Arch 的发行版。MacOS 或其它兼容 Posix 的操作系统应当都能使用这套工具链。

安装相关工具

没啥好说的,几行指令的事。

sudo pacman -S yay llvm libc++
yay -G visual-studio-code-bin

配置 VSCode

安装 clangdClang-FormatClang-TidyCodelldb 插件。

开一个文件夹作为项目文件夹,存放相关的配置文件。

可以再顺手安装一个 cmake,不过自动编译工具在多文件项目中才用得到,在单文件编译这种简单的需求下 cmake 配置起来还是有点繁琐且不必要了。

(必需)配置编译任务

负责配置启动调试前完成编译源文件任务的 tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build Source File", // 任务名
      "type": "shell",
      "command": "clang++",
      "args": [
        "-Wall", // 启用所有警告
        "-stdlib=libc++", // 使用 llvm 实现的 C++ 标准库而非 GNU C++ 标准库
        "-fdiagnostics-color=always", // 启用带颜色的提示信息
        "-g", // 生成可用于调试的源文件
//      "-fsanitize=address,undefined,leak",
        "-std=c++20", //使用c++20标准编译
        "${file}",
        "-o",
        "${workspaceFolder}/.build/${fileBasenameNoExtension}.out" // 源文件存放到 ./.build/{filename}.out
      ],
    }
  ]
}

负责配置调试任务的 launch.json

{
 "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug",
      "program": "${workspaceFolder}/.build/${fileBasenameNoExtension}.out", // 需要进行调试的文件名需要与配置的可执行文件输出目录一致
      "args": [],
      "cwd": "${workspaceFolder}",
      "preLaunchTask": "Build Source File" // 预启动任务名,与 tasks.json 中的任务名保持一致
    }
  ]
}

launch.jsontasks.json 都需要放到项目目录下的 .vscode 文件夹中。

(可选)配置 Clangd 全家桶

.clang-format 文件负责配置格式化程序 clang-format

Language: Cpp
BasedOnStyle: Chromium
ColumnLimit: 120

效果图

Pasted image 20250707154540.png